#pragma once

using int64 = long long;
using int32 = int;
using float64 = double;

#pragma pack(push, 1)
struct DDPushOrder
{
	char KHH[13];  // 客户号
	int64 WTH;	   // 委托号
	char YYB[5];   // 营业部
	char JYS[3];   // 交易所
	char GDH[11];  // 股东号
	char ZZHBM[7]; // 子账户编码
	char HYDM[9];  // 合约代码
	char ZQLX[4];  // 证券类型
	char JYDY[7];  // 交易单元
	char MMFX[2];  // 买卖方向
	char KPBZ[2];  // 开平标志
	int32 BDBQ;	   // 备兑标签
	char CXBZ[2];  // 撤销标志
	char CJBH[31]; // 成交编号
	char WTSJ[13]; // 委托时间
	char BZ[4];	   // 币种
	int64 WTSL;	   // 委托数量
	float64 WTJG;  // 委托价格
	float64 CJJE;  // 成交金额
	int32 SBJG;	   // 申报结果
	char JGSM[61]; // 结果说明
	int64 CXWTH;   // 撤销委托号
	int64 Token;
	char WTGY[9];		// 委托柜员
	char JYSCPFL[11];	// 交易所产品分类
	char XH[11];		// 交易所产品成交序号
	char KFSDM[7];		// 第三方开发商代码
	char KFSBDBH[17];	// 第三方开发商报单编号
	char CXKFSBDBH[17]; // 第三方撤销开发商报单编号
	char ZHBH[17];		// 组合编号
	char JYSDDBH[17];	// 交易所订单编号
	char MsgCode[8];	// 消息功能码
};

struct DDPushTrade
{
	char KHH[13];  // 客户号
	int64 WTH;	   // 委托号
	char YYB[5];   // 营业部
	char JYS[3];   // 交易所
	char GDH[11];  // 股东号
	char ZZHBM[7]; // 子账户编码
	char HYDM[9];  // 合约代码
	char ZQLX[4];  // 证券类型
	char JYDY[7];  // 交易单元
	char MMFX[2];  // 买卖方向
	char KPBZ[2];  // 开平标志
	int32 BDBQ;	   // 备兑标签
	char CXBZ[2];  // 撤销标志
	char CJBH[31]; // 成交编号
	char CJSJ[13]; // 成交时间
	char BZ[4];	   // 币种
	int64 CJSL;	   // 成交数量
	float64 CJJG;  // 成交价格
	float64 CJJE;  // 成交金额
	int32 SBJG;	   // 申报结果
	char JGSM[61]; // 结果说明
	int64 CXWTH;   // 撤销委托号
	int64 Token;
	char WTGY[9];		// 委托柜员
	char JYSCPFL[11];	// 交易所产品分类
	char XH[11];		// 交易所产品成交序号
	char KFSDM[7];		// 第三方开发商代码
	char KFSBDBH[17];	// 第三方开发商报单编号
	char CXKFSBDBH[17]; // 第三方撤销开发商报单编号
	char ZHBH[17];		// 组合编号
	char JYSDDBH[17];	// 交易所订单编号
	char MsgCode[8];	// 消息功能码
};

#pragma pack(pop)